Skip to content

[LCR 122] 路径加密 (Path Encryption)

难度:简单 | 标签:字符串、模拟

题目描述

假定一段路径记作字符串 path,其中以 . 作为分隔符。现需将路径加密,加密方法为将 path 中的分隔符替换为空格 " ",请返回加密后的字符串。

解法一:新建字符串 (Auxiliary String)

创建一个新的空字符串 res,遍历原字符串,如果是 . 就追加空格,否则追加原字符。

  • 时间复杂度
  • 空间复杂度 (因为创建了额外的存储空间)

解法二:原地修改 (In-Place Modification) —— 推荐 ✅

利用 C++ string 可变的特性,直接在原字符串上进行遍历和修改,省去额外的内存开销。 遍历时使用引用 (char &c),直接操作内存地址。

cpp
class Solution {
public:
    string pathEncryption(string path) {
        // 使用引用遍历,直接修改 path 中的字符
        for (char &c : path) {
            if (c == '.') {
                c = ' ';
            }
        }
        return path;
    }
};

易错点分析

  1. 引用符号 &: for (char &c : path) 中的 & 必不可少。如果没有 &,c 只是原字符的拷贝,修改它不会影响 path。
  2. 字符 vs 字符串: 注意是替换为字符空格 ' ' (单引号),而不是字符串空格 " " (双引号)。
  3. 语言特性: 此解法利用了 C++ string 是可变 (Mutable) 的特性。如果是 Java 或 Python,String 是不可变的,通常需要转化为数组或 StringBuilder 处理,空间复杂度会退化为

Released under the MIT License.